#ifndef CINTMATH_H_
#define CINTMATH_H_
#include "cmath.h"

/**
 * CIntMath - class providing static methods for basic integer operations
 * @author Michal Rost
 * @date 25.05.2007
 */
template <typename T>
class CIntMath : public CObject {
public:
  static T gcd(T n1, T n2);
  static T lcm(T n1, T n2);
  static T pow(T n1, T n2);
  static T eulerFunc(T num);
  static T findSmallestPrimeDivisor(T num);
  static T fastExp(T base, T num, T m);
  static bool isCongruent(T n1, T n2, T m);
  static string getClassName() {
    return "CIntMath";
  }
};

#endif
